#!/bin/bash

# 构建 Debian 包的脚本

# 默认版本号
DEFAULT_VERSION="1.1.53"
VERSION_FILE=".build_version"

# 获取当前应该使用的版本号
get_current_version() {
    local provided_version=$1
    
    # 如果提供了版本号，直接使用
    if [ -n "$provided_version" ] && [ "$provided_version" != "$DEFAULT_VERSION" ]; then
        echo "$provided_version"
        return
    fi
    
    # 检查版本文件是否存在
    if [ -f "$VERSION_FILE" ]; then
        local saved_version=$(cat "$VERSION_FILE")
        # 比较保存的版本号和默认版本号，使用较大的那个
        local latest_version=$(printf '%s\n%s\n' "$saved_version" "$DEFAULT_VERSION" | sort -V | tail -n1)
        echo "$latest_version"
    else
        # 如果没有版本文件，使用默认版本
        echo "$DEFAULT_VERSION"
    fi
}

# 递增版本号
increment_version() {
    local version=$1
    
    # 解析版本号 (格式: x.y.z)
    local major=0
    local minor=0
    local patch=0
    
    # 使用正则表达式提取版本号部分
    if [[ $version =~ ^([0-9]+)\.([0-9]+)\.([0-9]+) ]]; then
        major="${BASH_REMATCH[1]}"
        minor="${BASH_REMATCH[2]}"
        patch="${BASH_REMATCH[3]}"
    else
        # 如果无法解析，返回默认版本
        echo "$DEFAULT_VERSION"
        return
    fi
    
    # 递增补丁版本号
    patch=$((patch + 1))
    
    echo "${major}.${minor}.${patch}"
}

# 保存版本号到文件
save_version() {
    local version=$1
    echo "$version" > "$VERSION_FILE"
    echo "已保存版本号 $version 到 $VERSION_FILE"
}

# 检查是否传入了版本参数
if [ $# -ge 1 ]; then
    PROVIDED_VERSION="$1"
else
    PROVIDED_VERSION=""
fi

# 获取当前应该使用的版本号
CURRENT_VERSION=$(get_current_version "$PROVIDED_VERSION")

echo "当前版本: $CURRENT_VERSION"

# 更新控制文件中的版本号
echo "更新版本号为 $CURRENT_VERSION..."
sed -i "s/Version: .*/Version: $CURRENT_VERSION/" debian/DEBIAN/control

echo "设置文件权限..."
chmod 755 debian/DEBIAN/postinst
chmod 755 debian/DEBIAN/prerm
chmod 755 debian/usr/bin/*
chmod 755 debian/usr/share/kernel-management/*.py

# 确保桌面文件有正确的权限
if [ -d "debian/usr/share/applications" ]; then
    chmod 644 debian/usr/share/applications/*.desktop 2>/dev/null || true
fi

# 如果图标文件存在，确保其有正确的权限
if [ -f "debian/usr/share/icons/hicolor/48x48/apps/kernel-management.png" ]; then
    chmod 644 debian/usr/share/icons/hicolor/48x48/apps/kernel-management.png
fi

# 计算安装大小（KB）
SIZE=$(du -s debian/usr | cut -f1)

# 更新控制文件中的大小信息
sed -i "s/Installed-Size: .*/Installed-Size: $SIZE/" debian/DEBIAN/control
sed -i "s/KM_VERSION = \".*\"/KM_VERSION = \"$CURRENT_VERSION\"/" debian/usr/share/kernel-management/kernel_management_gui.py

echo "构建 Debian 包..."
PACKAGE_NAME="com.kernel-management-usr_${CURRENT_VERSION}_all.deb"
dpkg-deb --build debian "$PACKAGE_NAME"

if [ $? -eq 0 ]; then
    echo "Debian package created: $PACKAGE_NAME"
    
    # 递增版本号并保存（除非指定了具体版本号）
    if [ -z "$PROVIDED_VERSION" ] || [ "$PROVIDED_VERSION" = "$DEFAULT_VERSION" ]; then
        NEXT_VERSION=$(increment_version "$CURRENT_VERSION")
        save_version "$NEXT_VERSION"
        echo "版本号已递增并保存为: $NEXT_VERSION"
    else
        # 如果指定了版本号，也要保存这个版本号
        save_version "$CURRENT_VERSION"
        echo "指定版本号已保存: $CURRENT_VERSION"
    fi
else
    echo "Error: Failed to create Debian package"
    exit 1
fi